
using namespace std;

#include "EscuchaTeclasIngresadas.h"

EscuchaTeclasIngresadas::EscuchaTeclasIngresadas(bool atributo) : Thread(atributo){
}

EscuchaTeclasIngresadas::~EscuchaTeclasIngresadas() {
	free(this);
}

//Manejador de señales de interrupcion.
void EscuchaTeclasIngresadas::signalHandler(int signal){
	if(signal == SIGTERM){
		//Informo la finalizacion por sysout
		cout<< "[INFO] - Se cierra el hilo de respuesta a clientes. "<< endl;
		//Cierro el thread.
		pthread_exit(NULL);
	}
}

void EscuchaTeclasIngresadas::run (){
	signal(SIGURG, EscuchaTeclasIngresadas::signalHandler);
	signal(SIGABRT, EscuchaTeclasIngresadas::signalHandler);
	signal(SIGFPE, EscuchaTeclasIngresadas::signalHandler);
	signal(SIGILL, EscuchaTeclasIngresadas::signalHandler);
	/* Me attacho a la señal que envia el server para finalizar. */
	signal(SIGTERM, EscuchaTeclasIngresadas::signalHandler);

	/* Mientras el cliente este activo */ //CAMBIO
	while (!Partida::getInstance()->isFinTorneo() && Partida::getInstance()->isActivo()) {
		/* Desencolo la respuesta generada */
		Partida::getInstance()->tomarAccionPresionada();
		usleep(50000);
	}

	//Cierro el thread.
	pthread_exit(NULL);
}
	
